package com.autumn.platform.dao.schema.mapper.pageable;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

import com.autumn.platform.dao.schema.mapper.ParamDefine;

@Mapper
public interface PageableDao {

    /**
     * 无参数分页查询
     * 
     * @return
     */
    public Page<ParamDefine> selectPage();

    /**
     * 无参数，有分页对象参数查询
     * 
     * @param pageable
     * @return
     */
    public Page<ParamDefine> selectPage(Pageable pageable);

    /**
     * 只有一个分页对象参数查询
     * 
     * @param pageable
     * @return
     */
    public Page<ParamDefine> selectPage(Sort sort);

    /**
     * 有命名参数，无分页对象查询
     * 
     * @param paramCode
     * @return
     */
    public Page<ParamDefine> selectPage(@Param("paramCode") String paramCode);

    /**
     * 有命名参数，有分页对象分页查询
     * 
     * @param paramCode
     * @param pageable
     * @return
     */
    public Page<ParamDefine> selectPage(@Param("paramCode") String paramCode, Pageable pageable);

    /**
     * 有参数，无分页对象查询
     * 
     * @param parameter
     * @return
     */
    public Page<ParamDefine> selectPage(Object parameter);

    /**
     * 有参数，有分页对象查询
     * 
     * @param parameter
     * @param pageable
     * @return
     */
    public Page<ParamDefine> selectPage(Object parameter, Pageable pageable);

}
